using System;

namespace NWrapper
{
	/// <summary>
	/// An ICache implementation.
	/// </summary>
	public enum CacheType
	{
		/// <summary>
		/// No cache provider (implements <see cref="NWrapper.Cache.NullCache"/>).
		/// </summary>
		None = 0,
		/// <summary>
		/// Custom cache provider. Specified provider must implement <see cref="ICache"/>.
		/// </summary>
		Custom,
		/// <summary>
		/// Asp.Net cache provider (implements <see cref="NWrapper.Cache.AspNetCache"/>).
		/// </summary>
		AspNet,
		/// <summary>
		/// Memcached cache provider. Requires inclusion of NWrapper.Cache.Memcached assembly.
		/// </summary>
		Memcached,
		/// <summary>
		/// Microsoft Enterprise Library Caching Application Block provider. 
		/// Requires inclusion of NWrapper.Cache.EnterpriseLibrary assembly.
		/// </summary>
		EnterpriseLibrary
	}

	/// <summary>
	/// Reflects which events should be logged.
	/// </summary>
	public enum LoggingLevel
	{
		/// <summary>
		/// No logging
		/// </summary>
		None = 0,
		/// <summary>
		/// Debug logging level
		/// </summary>
		Debug,
		/// <summary>
		/// Info logging level
		/// </summary>
		Info,
		/// <summary>
		/// Warning logging level
		/// </summary>
		Warning,
		/// <summary>
		/// Error logging level
		/// </summary>
		Error
	}

	/// <summary>
	/// An ILogger implementation.
	/// </summary>
	public enum LoggerType
	{
		/// <summary>
		/// No logger
		/// </summary>
		None = 0,
		/// <summary>
		/// Custom logger
		/// </summary>
		Custom,
		/// <summary>
		/// Windows event log logger
		/// </summary>
		EventLog,
		/// <summary>
		/// Log4Net logger
		/// </summary>
		Log4Net,
		/// <summary>
		/// NLog logger
		/// </summary>
		NLog
	}

	/// <summary>
	/// An IRepository implementation.
	/// </summary>
	public enum RepositoryType
	{
		/// <summary>
		/// No repository (implements <see cref="NWrapper.Repositories.NullRepository"/>).
		/// </summary>
		None = 0,
		/// <summary>
		/// Custom repository. Specified provider must implement <see cref="NWrapper.IRepository"/>.
		/// </summary>
		Custom,
		/// <summary>
		/// Repository using Paul Wilson's O/R Mapper (http://www.ormapper.net).
		/// Requires external assembly.
		/// </summary>
		WilsonORMapper
	}

	/// <summary>
	/// Sort direction -- ascending or descending.
	/// </summary>
	public enum SortDirection
	{
		/// <summary>
		/// Ascending
		/// </summary>
		Asc = 0,
		/// <summary>
		/// Descending
		/// </summary>
		Desc = 1
	}
}
